|
|
|
|
|
SCOPE OF |
|
SOFTWARE
ENGINEERING |
|
|
|
|
|
|
Historical aspects |
|
Economic aspects |
|
Maintenance aspects |
|
Specification and design aspects |
|
Team programming aspects |
|
The object-oriented paradigm |
|
Terminology |
|
|
|
|
|
|
|
|
Historical Aspects |
|
1968 NATO Conference, Garmisch |
|
Aim: to solve the “Software Crisis” |
|
Software is delivered |
|
Late |
|
Over budget |
|
With residual faults |
|
|
|
|
|
|
|
Why cannot bridge-building techniques be used to
build operating systems? |
|
Attitude to collapse |
|
Imperfect engineering |
|
Complexity |
|
Maintenance |
|
|
|
|
Software Engineering is not “Engineering” |
|
|
|
|
|
|
Economically viable techniques |
|
Coding method CMnew is 10% faster
than currently used method CMold. Should it be used? |
|
Common sense answer |
|
Of course! |
|
Software Engineering answer |
|
Consider the effect of CMnew on
maintenance |
|
|
|
|
|
|
Software Life Cycle |
|
The way we produce software, including |
|
The life-cycle model |
|
The individuals |
|
CASE tools |
|
|
|
|
1. Requirements phase |
|
2. Specification phase |
|
3. Design phase |
|
4. Implementation phase |
|
5. Integration phase (in parallel with 4) |
|
6. Maintenance phase |
|
7. Retirement |
|
|
|
|
1976–1981 data |
|
Maintenance constitutes 67% of total cost |
|
|
|
|
|
|
|
|
Good software is maintained—bad software is discarded |
|
Different types of maintenance |
|
Corrective maintenance [about 20%] |
|
Enhancement |
|
Perfective maintenance [about 60%] |
|
Adaptive maintenance [about 20%] |
|
Effect of CMnew on maintenance |
|
|
|
|
|
60 to 70 percent of faults are specification and
design faults |
|
Data of Kelly, Sherif, and Hops [1992] |
|
1.9 faults per page of specification |
|
0.9 faults per page of design |
|
0.3 faults per page of code |
|
Data of Bhandari et al. [1994] |
|
|
|
|
|
Faults at end of the design phase of the new
version of the product |
|
13% of faults from previous version of product |
|
16% of faults in new specifications |
|
71% of faults in new design |
|
|
|
|
|
|
|
Hardware is cheap |
|
We can build products that are too large to be
written by one person in the available time |
|
Teams |
|
Interface problems |
|
Meetings |
|
|
|
|
|
The structured paradigm had great successes
initially |
|
It started to fail with larger products (>
50,000 LOC) |
|
Maintenance problems (today, up to 80% of
effort) |
|
Reason: structured methods are |
|
Action oriented (finite state machines, data
flow diagrams); or |
|
Data oriented (entity-relationship diagrams,
Jackson’s method); |
|
But not both |
|
|
|
|
|
|
|
|
Both data and actions are of equal importance |
|
Object: |
|
Software component that incorporates both data
and the actions that are performed on that data |
|
Example: |
|
Bank account |
|
Data: account balance |
|
Actions: deposit, withdraw, determine
balance |
|
|
|
|
Information hiding |
|
Responsibility-driven design |
|
Impact on maintenance, development |
|
|
|
|
|
Conceptual independence |
|
Encapsulation |
|
Physical independence |
|
Information hiding |
|
Impact on development |
|
Physical counterpart |
|
Impact on maintenance |
|
Independence effects |
|
|
|
|
|
Also called “Design by Contract” |
|
Send flowers to your aunt in Iowa City |
|
Call 1-800-FLOWERS |
|
Where is 1-800-FLOWERS? |
|
Which Iowa City florist does the delivery? |
|
Information hiding |
|
Object-oriented paradigm |
|
“Send a message to a method [action] of an
object“ |
|
|
|
|
|
Structured paradigm: |
|
Jolt between analysis (what) and design (how) |
|
Object-oriented paradigm: |
|
Objects enter from very beginning |
|
|
|
|
|
|
|
Systems analysis |
|
Determine what has to be done |
|
Design |
|
Determine how to do it |
|
Architectural design—determine modules |
|
Detailed design—design each module |
|
|
|
|
|
Object-oriented analysis |
|
Determine what has to be done |
|
Determine the objects |
|
Object-oriented design |
|
Determine how to do it |
|
Design the objects |
|
|
|
|
|
|
|
Do not use the object-paradigm to enhance a
product developed using the structured paradigm |
|
Water and oil do not mix |
|
Exception: if the new part is totally disjoint |
|
Example: adding a GUI (graphical user interface) |
|
|
|
|
|
Quality |
|
Program, system, product |
|
Methodology, paradigm |
|
Method and technique |
|
Client, developer, user |
|
Bug ! |
|
“A bug ! crept into the code” |
|
instead
of |
|
“I made a mistake” |
|
|
|
|
|
Data component of an object |
|
State variable |
|
Instance variable (Java) |
|
Field (C++) |
|
Attribute (generic) |
|
Action component of an object |
|
Member function (C++) |
|
Method (generic) |
|
|
|
|
|
C++: A member is either an |
|
Attribute (“field”), or a |
|
Method (“member function”) |
|
Java: A field is either an |
|
Attribute (“instance variable”), or a |
|
Method |
|